home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 005 / product.arc / ACAD.LSP next >
Text File  |  1980-01-04  |  17KB  |  478 lines

  1. (Vmon)  ;Virtual Memory On 
  2.  
  3. ;These are the functions in ACAD.LSP:
  4. ;    1.  Find  (find) 
  5. ;    2.  Import  (import) 
  6. ;    3.  Export  (export) 
  7. ;    4.  Text Fit  (tfit) 
  8. ;    5.  Change Text Size Global (tszg) 
  9. ;    6.  Change Text Size Select (tsz) 
  10. ;    7.  Fillet 2 circles  (filetcir) 
  11. ;    8.  Increment Number Individual (number) 
  12. ;    9.  Change Text (ct) 
  13. ;   10.  Delete Layer (dl) 
  14. ;   11.  Delete All (da) 
  15. ;   12.  Drawing Setup (setup) 
  16. ;   13.  Parts List (plist) 
  17. ;   14.  Weld arrow up (wldf) 
  18. ;   15.  Weld arrow down (wldn) 
  19. ;   16.  Part identifier (balloonc) 
  20. ;   17.  Ortho Rectangle (r) 
  21. ;   18.  Reset Drawing Scale (orsc) 
  22. ;   19.  Error: 
  23. ;   20.  Breakout 
  24.  
  25. ;1.  Counts the number of objects in a drawing.
  26. ;    They could be entities or blocks. 
  27. (Defun C:Find (/ A B C) 
  28.        (Setvar "Cmdecho" 0) 
  29.        (Setq A (Getstring "\nObject name to be found: ")) 
  30.        (Setq B 0) 
  31.        (Setq C (Entnext)) 
  32.        (While C 
  33.               (Cond ((= (Strcase A) (Cdr (Assoc 0 (Entget C)))) 
  34.                      (Setq B (1+ B))) 
  35.                     ((= (Strcase A) (Cdr (Assoc 2 (Entget C)))) 
  36.                      (Setq B (1+ B))) 
  37.               ) 
  38.               (Setq C (Entnext C)) 
  39.        ) 
  40.        (Prompt "\nThere are ")  
  41.        (Prompt (Itoa B)) 
  42.        (Prompt " occurances of ") 
  43.        (Prompt (Strcase A)) (Prompt "\n") 
  44.  
  45. ;2.  Imports an ASCII text file into the current drawing. 
  46. (Defun C:Import (/ P1 A B C D E F) 
  47.        (Setvar "Cmdecho" 0) 
  48.        (Prompt "Developed by: Applied Technical Support -
  49. Tulsa\n") 
  50.        (Setq A (Getstring "Enter the ASCII text file name: ")) 
  51.        (Setq B (Getreal "Enter the text height: ")) 
  52.        (Setq C (Getreal "Enter the line spacing: ")) 
  53.        (Setq D (Getstring "Enter the justification, LCR <L>: ")) 
  54.        (Setq P1 (Getpoint "Enter the insertion point of first
  55. text line: ")) 
  56.        (Setq E (Open A "r")) 
  57.        (Setq F (Read-line E)) 
  58.        (If (= D "") (Setq D nil)) 
  59.        (While (Or nil F) 
  60.               (If (null D) 
  61.                   (Command "Text" P1 B 0 F) 
  62.                   (Command "Text" D P1 B 0 F) 
  63.               ) 
  64.               (Setq P1 (List (Car P1) (- (Cadr P1) C))) 
  65.               (Setq F (Read-line E)) 
  66.        ) 
  67.  
  68. ;3.  Export - takes notes off a drawing and places them into 
  69. ;    an ASCII file. 
  70. (Defun C:Export (/ A B C D E F G H I) 
  71.        (Setvar "Cmdecho" 0) 
  72.        (Setq A (Getstring "Enter the file name: ")) 
  73.        (Setq B (Open A "r")) 
  74.        (If (/= B nil) 
  75.            (Progn 
  76.                  (Prompt "File already exists.\n") 
  77.                  (Close B) 
  78.            ) 
  79.            (Progn 
  80.                  (Setq C (Open A "w")) 
  81.                  (Prompt "\nFile now open") 
  82.                  (Prompt "\nPick items in order to write to
  83. file") 
  84.                  (Setq D 0) 
  85.                  (Setq E (Ssget)) 
  86.                  (Setq F (Sslength E)) 
  87.                  (Repeat F 
  88.                           (Setq G (Ssname E D)) 
  89.                           (Setq H (Entget G)) 
  90.                           (Setq I (Cdr (Assoc 1 H))) 
  91.                           (Write-line I C) 
  92.                           (Setq D (+ 1 D)) 
  93.                  ) 
  94.                  (Close C) 
  95.            ) 
  96.        ) 
  97.  
  98. ;4.  Text Fit - Squeezes and moves existing text. 
  99. (Defun C:Tfit (/ P1 P2 P3 A B C D) 
  100.        (Setvar "Cmdecho" 0) 
  101.        (Setq A (Entsel "\nSelect insertion point of text to fit:
  102. ")) 
  103.        (Setq A (Car A)) 
  104.        (Setq B (Entget A)) 
  105.        (Setvar "Orthomode" 1) 
  106.        (Setq P1 (Cdr (Assoc 10 B))) 
  107.        (Setq P2 (Getdist P1 "\nTouch end of text: ")) 
  108.        (Setq P1 (Getpoint "\nEnter new 1st point: ")) 
  109.        (Setq P3 (Getpoint P1 "\nEnter 2nd point: ")) 
  110.        (Setq C (Assoc 41 B)) 
  111.        (Setq D (* (/ (Distance P1 P3) P2) (Cdr C))) 
  112.        (Setq D (Cons 41 D)) 
  113.        (Setq B (Subst D C B)) 
  114.        (Setq P1 (Cons 10 P1)) 
  115.        (Setq P3 (Cons 11 P3)) 
  116.        (Setq C (Assoc 10 B)) 
  117.        (Setq B (Subst P1 C B)) 
  118.        (Setq C (Assoc 11 B)) 
  119.        (Entmod (Subst P3 C B)) 
  120.        (Setq A nil) 
  121.  
  122. ;5.  Globally changes text from one height to another. 
  123. (Defun C:Tszg (/ A B C D E F G) 
  124.        (Setvar "Cmdecho" 0) 
  125.        (Setq A (Getreal "\nEnter text size to change: ")) 
  126.        (Setq B (Fix (* 100 A))) 
  127.        (Setq C (Getreal "\nEnter new text height: ")) 
  128.        (Setq D (Entnext)) 
  129.        (Setq E (Cons 40 C)) 
  130.        (Setq F (Assoc 40 (Entget D))) 
  131.        (While D 
  132.                (Setq F (Assoc 40 (Entget D))) 
  133.                (If (/= nil F) 
  134.                    (Setq G (Fix (* 100 (Cdr F)))) 
  135.                ) 
  136.                (If (= B G) 
  137.                    (Entmod (Subst E F (Entget D))) 
  138.                ) 
  139.                (Setq D (Entnext D)) 
  140.        ) 
  141.  
  142. ;6.  Changes selected text from one height to another. 
  143. (Defun C:Tsz (/ A B C D E F) 
  144.        (Setvar "Cmdecho" 0) 
  145.        (Setq A (Ssget)) 
  146.        (Setq B (Sslength A)) 
  147.        (Setq C (Getreal "\nEnter new text size: ")) 
  148.        (While (> B 0) 
  149.               (Setq B (1- B)) 
  150.               (Setq D (Ssname A B)) 
  151.               (Setq D (Entget D)) 
  152.               (Setq E (Assoc 40 D)) 
  153.               (Setq F (Cons 40 C)) 
  154.               (Entmod (Setq D (Subst F E D))) 
  155.        ) 
  156.        (Setq A nil) 
  157.  
  158. ;7.  Fillets the outside radius between two circles. 
  159. (Defun C:Filetcir (/ A B C D E F G H I) 
  160.        (Setvar "Cmdecho" 0) 
  161.        (Setvar "Blipmode" 0) 
  162.        (Setq A (Osnap (Getpoint "\nMark first arc: ")"Nea")) 
  163.        (Setq B (Osnap (Getpoint "\nMark second arc: ")"Nea")) 
  164.        (Setq C (Getdist "\nFillet radius: ")) 
  165.        (Setq D (Osnap A "Cen")) 
  166.        (Setq E (Distance A D)) 
  167.        (Setq F (Osnap B "Cen")) 
  168.        (Setq G (Distance B F)) 
  169.        (Setq H (Distance D F)) 
  170.        (Setq I (+ (* H H) 
  171.                (- (* (- C E) (- C E))(* (- C G) (- C G)))) 
  172.        ) 
  173.        (Setq A (* 2 (- C E) H)) 
  174.        (Setq B (* (- C E) (/ I A))) 
  175.        (Setq A (Sqrt (- (* (- C E) (- C E)) (* B B)))) 
  176.        (Setq B (Polar F (Angle F D) (- H B))) 
  177.        (Setq A (Polar B (- (Angle F D) (/ Pi 2)) A)) 
  178.        (Setq B (+ (Angle F A) Pi)) 
  179.        (Setq C (+ (Angle D A) Pi)) 
  180.        (Setvar "Blipmode" 1) 
  181.        (Command "Arc" (Polar D C E) "C" A (Polar F B G)) 
  182.  
  183. ;8.  Increments numbers while the user 
  184. ;    randomly places them around the screen. 
  185. (Defun C:Numbers (/ A B C D E) 
  186.        (Setvar "Cmdecho" 0) 
  187.        (Setq A (Getint "\nEnter first number of series: ")) 
  188.        (Setq B (Getint "\nEnter last number of series: ")) 
  189.        (Setq C (Getreal "\nEnter text height: ")) 
  190.        (Setq D (Getreal "\nText rotation <0>: " )) 
  191.        (If (= D nil) 
  192.            (Setq D 0) 
  193.        ) 
  194.        (While (<= A B) 
  195.               (Setq E (Getpoint "\nLocation of number: ")) 
  196.               (Command "Text" E C D A) 
  197.               (Setq A (+ A 1)) 
  198.        ) 
  199.  
  200. ;9. Changes text.  Corrects spelling errors 
  201. (defun c:ct (/ p l n e os as ns st s nsl osl sl si chf chm) 
  202.         (Setvar "Cmdecho" 0) 
  203.         (setq p (ssget)) 
  204.         (if p (progn 
  205.            (setq osl (strlen (setq os 
  206.                          (getstring "\nOld string: " t)))) 
  207.            (setq nsl (strlen (setq ns 
  208.                          (getstring "\nNew string: " t)))) 
  209.            (setq l 0) 
  210.            (setq chm 0) 
  211.            (setq n (sslength p)) 
  212.            (while (< l n) 
  213.               (if (= "TEXT" 
  214.                      (cdr (assoc 0 
  215.                        (setq e (entget (ssname p l)))))) 
  216.                  (progn 
  217.                     (setq chf nil) 
  218.                     (setq s (cdr (setq as (assoc 1 e)))) 
  219.                     (setq si 1) 
  220.                     (while (= osl (setq sl (strlen 
  221.                                   (setq st (substr s si osl))))) 
  222.                        (if (= st os) (progn 
  223.                           (setq s (strcat (substr s 1 (1- si)) ns
  224.  
  225.                                           (substr s (+ si osl))))
  226.  
  227.                           (setq chf t) 
  228.                        )) 
  229.                        (setq si (1+ si)) 
  230.                     ) 
  231.                     (if chf (progn 
  232.                        (setq e (subst (cons 1 s) as e)) 
  233.                        (entmod e) 
  234.                        (setq chm (1+ chm)) 
  235.                     )) 
  236.                  ) 
  237.               ) 
  238.               (setq l (1+ l)) 
  239.            ) 
  240.         )) 
  241.         (princ "Changed ") 
  242.         (princ chm) 
  243.         (princ " text lines.") 
  244.         (terpri) 
  245.  
  246. ;10.  deletes layers. 
  247. (Defun C:Dl (/ A B) 
  248.        (Setvar "Cmdecho" 0) 
  249.        (Setq A (Strcase (Getstring "\nEnter layer to delete: ")))
  250.  
  251.        (Setq B (Entnext)) 
  252.        (While B 
  253.               (If (= A (Cdr (Assoc 8 (Entget B)))) 
  254.                   (Entdel B) 
  255.               ) 
  256.               (Setq B (Entnext B)) 
  257.        ) 
  258.  
  259. ;11.  Deletes all. 
  260. (Defun C:Da (/ A) 
  261.        (Setvar "Cmdecho" 0) 
  262.        (Setq A (Entnext)) 
  263.        (While A 
  264.               (Entdel A) 
  265.               (Setq A (Entnext A)) 
  266.        ) 
  267.  
  268. :12.  Drawing scale setup. 
  269. (Defun C:Setup (/ A B C D E F) 
  270.        (Setvar "Cmdecho" 0) 
  271.        (Setq A nil) 
  272.        (Setq B "Wrong paper size") 
  273.        (Command "Dscale") 
  274.        (Setq DS (Getreal "\nEnter drawing scale (1, 2, 4, 12, 48, etc.): ")) 
  275.        (Prompt "\nAvailable paper sizes are AH AV B C D E") 
  276.        (Setq A (Strcase (Getstring "\nEnter letter of paper size:"))) 
  277.        (Setvar "Userr1" DS) 
  278.        (Setvar "Cmdecho" 0) 
  279.        (If (= A "AH") (Setq C (List 12 9))) 
  280.        (If (= A "AV") (Setq C (List 9 12))) 
  281.        (If (= A "B") (Setq C (List 18 12))) 
  282.        (If (= A "C") (Setq C (List 24 18))) 
  283.        (If (= A "D") (Setq C (List 36 24))) 
  284.        (If (= A "E") (Setq C (List 48 36))) 
  285.        (If (= A nil) (*error* B)) 
  286.        (Setq D (Car C)) 
  287.        (Setq E (Cadr C)) 
  288.        (Setvar "Regenmode" 0) 
  289.        (Command "Dim" "Dimscale" DS "Exit") 
  290.        (Command "Limits" (List (* DS -1) (* DS -1)) (List (* DS
  291. D) (* DS E))) 
  292.        (Command "Grid" DS) 
  293.        (Command "Snap" (/ DS 4)) 
  294.        (Command "Ltscale" DS) 
  295.        (If (= A "AH")(Command "Insert" "Tshtah" (List 0 0) DS ""
  296. "0")) 
  297.        (If (= A "AV")(Command "Insert" "Tshtav" (List 0 0) DS ""
  298. "0")) 
  299.        (If (= A "B")(Command "Insert" "Tshtb" (List 0 0) DS ""
  300. "0")) 
  301.        (If (= A "C")(Command "Insert" "Tshtc" (List 0 0) DS ""
  302. "0")) 
  303.        (If (= A "D")(Command "Insert" "Tshtd" (List 0 0) DS ""
  304. "0")) 
  305.        (If (= A "E")(Command "Insert" "Tshte" (List 0 0) DS ""
  306. "0")) 
  307.        (Setvar "Regenmode" 1) 
  308.        (Command "Zoom" "A") 
  309.        (Setq F (* 0.125 DS)) 
  310.        (Setvar "Textsize" F) 
  311.  
  312. ;13.  Draws a parts list and prompts for the  
  313. ;     parts. 
  314. (Defun C:Plist (/ P1 P2 P3 P4 P5 A1 A B C D E F) 
  315.        (Setvar "Cmdecho" 0) 
  316.        (Setq F (Getvar "Blipmode")) 
  317.        (Setvar "Blipmode" 0) 
  318.        (prompt "\n ********* BE SURE YOU HAVE RUN SETUP!! ******")
  319.        (prompt "\n ********* Just Type SETUP ******")
  320.        (Setq A (Getvar "userr1")) 
  321.        (Setq B (Getint "\nEnter number of items in list: ")) 
  322.        (Setq P1 (Osnap (Getpoint "\nTouch upper right corner of
  323. drawing: ") 
  324.                  "End") 
  325.        ) 
  326.        (Command "Insert" "Plist" P1 (/ A 1) "" "0") 
  327.        (Setq P1 (List (- (Car P1) (* 0.34375 A)) (- (Cadr P1) (*
  328. 0.31250 A)))) 
  329.        (Setq P2 (List (- (Car P1) (* 5.09375 A)) (Cadr P1))) 
  330.        (Setq P3 (List (- (Car P2) (* 1.00 A)) (Cadr P2))) 
  331.        (Setq P4 (List (- (Car P3) (* 0.4375 A)) (Cadr P3))) 
  332.        (Setq P5 (List (- (Car P4) (* 0.625 A)) (+ (Cadr P4) (*
  333. 0.3125 A)))) 
  334.        (Setq A1 (* 1.5 Pi)) (Setq D (* 0.25 A)) 
  335.        (Setq E (+ (* 0.3125 A) (* D B))) 
  336.        (Command "Line" P1 (Polar P1 A1 E) "") 
  337.        (Command "Line" P2 (Polar P2 A1 E) "") 
  338.        (Command "Line" P3 (Polar P3 A1 E) "") 
  339.        (Command "Line" P4 (Polar P4 A1 E) "") 
  340.        (Command "Line" P5 (Polar P5 A1 (+ (* 0.6250 A) (* D B)))
  341. "") 
  342.        (Setq P1 (Polar P5 A1 (* 0.875 A))) 
  343.        (Command "Line" P1 (Polar P1 0 (* 7.5 A)) "") 
  344.        (Command "Array" "L" "" "R" B "" (* -1 D)) 
  345.        (Setq P1 (List (+ (Car P1) (* 0.3125 A)) (+ (Cadr P1) (*
  346. 0.0625 A)))) 
  347.        (Setq P2 (Polar P1 0 (* 0.53125 A))) 
  348.        (Setq P3 (Polar P2 0 (* 0.71875 A))) 
  349.        (Setq P4 (Polar P3 0 (* 0.5625 A))) 
  350.        (Setq P5 (Polar P4 0 (* 5.203125 A))) 
  351.        (Setq C 1) 
  352.        (Repeat B 
  353.                (Command "Text" "C" P1 (* 0.125 A) "0" (Itoa C)) 
  354.                (Prompt "\nQuantity for item ") 
  355.                (Princ C) 
  356.                (Prompt ": ") 
  357.                (Setq G (Read-line)) 
  358.                (Command "Text" "C" P2 (* 0.125 A) "0" G) 
  359.                (Prompt "\nPart number for item ") 
  360.                (Princ C) (Prompt ": ") (Setq G (Read-line)) 
  361.                (Command "Text" "C" P3 (* 0.125 A) "0" G) 
  362.                (Prompt "\nDescription for item ") 
  363.                (Princ C) (Prompt ": ") (Setq G (Read-line)) 
  364.                (Command "Text" P4 (* 0.125 A) "0" G) 
  365.                (Prompt "\nDrawing size for item ") 
  366.                (Princ C) (Prompt ": ") (Setq G (Read-line)) 
  367.                (Command "Text" P5 (* 0.125 A) "0" G) 
  368.                (Setq P1 (List (Car P1) (- (Cadr P1) D))) 
  369.                (Setq P2 (List (Car P2) (- (Cadr P2) D))) 
  370.                (Setq P3 (List (Car P3) (- (Cadr P3) D))) 
  371.                (Setq P4 (List (Car P4) (- (Cadr P4) D))) 
  372.                (Setq P5 (List (Car P5) (- (Cadr P5) D))) 
  373.                (Setq C (+ 1 C)) 
  374.        ) 
  375.        (Setvar "Blipmode" F) 
  376.  
  377.  
  378. ;14.  Draws a weld arrow. 
  379. (Defun C:Wldf (/ P1 P2 A) 
  380.        (Setvar "Cmdecho" 0) 
  381.        (Setq DS (Getreal "\nEnter the Dimscale: ")) 
  382.        (Setq P1 (Getpoint "\nFrom point: ")) 
  383.        (Setq P2 (Getpoint "\nTo point: ")) 
  384.        (If (<= (Car P2) (Car P1)) 
  385.            (Setq A "Weldupr") (Setq A "Weldupl") 
  386.        ) 
  387.       (Command "Layer" "S" "4" "") 
  388.       (Command "Dim1" "Leader" P1 P2 "" "") 
  389.       (Command "Insert" A P2 DS "" "0") 
  390.  
  391. ;15.  Draws a weld arrow. 
  392. (Defun C:Wldn (/ P1 P2 A) 
  393.        (Setvar "Cmdecho" 0) 
  394.        (Setq DS (Getreal "\nEnter the Dimscale: ")) 
  395.        (Setq P1 (Getpoint "\nFrom point: ")) 
  396.        (Setq P2 (Getpoint "\nTo point: ")) 
  397.        (If (<= (CAR P2) (CAR P1)) 
  398.            (Setq A "Welddnr") (Setq A "Welddnl") 
  399.        ) 
  400.        (Command "Layer" "S" "4" "") 
  401.        (Command "Dim1" "Leader" P1 P2 "" "") 
  402.        (Command "Insert" A P2 DS "" "0") 
  403.  
  404. ;16.  Draws part identifier - a balloon containing a  
  405. ;     number, then a leader to the object. 
  406. (Defun C:Balloonc (/ P1 P2 P3 P4 A) 
  407.        (Setq DS (Getreal "\nEnter the Dimscale: ")) 
  408.        (Setvar "Cmdecho" 0) 
  409.        (Setq P1 (Getpoint "\nFrom point: ")) 
  410.        (Setq P2 (Getpoint "\nTo point: ")) 
  411.        (If (<= (Car P2) (Car P1)) 
  412.            (Setq A (* -0.25 DS)) (Setq A (* 0.25 DS)) 
  413.        ) 
  414.        (Setq P3 (List (+ (Car P2) A) (Cadr P2))) 
  415.        (Setq P4 (List (+ (Car P3)(/ A 2)) (Cadr P3))) 
  416.        (Command "Layer" "S" "4" "") 
  417.        (Command "Dim1" "Leader" P1 P2 P3 "" "") 
  418.        (Setq A "Cballoon") 
  419.        (Command "Insert" A P4 DS "" "0") 
  420.  
  421. ;17.  Draws an orthangonal retangle with PLINE. 
  422. (Defun C:R (/ P1 P2) 
  423.        (Setvar "Cmdecho" 0) 
  424.        (Setq P1 (Getpoint "\nEnter first corner: ")) 
  425.        (Setvar "Lastpoint" P1) 
  426.        (Setq P2 (Getpoint "\nEnter second corner: ")) 
  427.        (Command "Pline" P1 (List (Car P1) (Cadr P2)) 
  428.                            P2 (List (Car P2) (Cadr P1)) "C" 
  429.        ) 
  430.  
  431. ;18.  Resets dimscale and user variable 1. 
  432. (Defun C:Orsc  ( / A B) 
  433.        (Setvar "Cmdecho" 0) 
  434.        (Setq B (Getvar "Userr1")) 
  435.        (Prompt "\nPresent drawing scale is <") 
  436.        (Prompt (Rtos B)) 
  437.        (Prompt ">") 
  438.        (Setq A (Getreal "\nEnter new drawing scale: ")) 
  439.        (Setvar "Userr1" A) 
  440.        (Command "Dim" "Dimscale" (Getvar "Userr1") "Exit") 
  441.  
  442. ;19. Error. 
  443. (Defun *error* (st) 
  444.   (Princ "Error: ") 
  445.   (Princ st) 
  446.   (Terpri)) 
  447.  
  448. ;20.  Breakout. 
  449. (Defun C:Breakout (/ P1 P2 P3 A B) 
  450.        (Setvar "Cmdecho" 0) 
  451.        (Setq P1 (Osnap (Getpoint "\nPick first intersection:
  452. ")"Int,End")) 
  453.        (Setq P2 (Osnap (Getpoint "\nPick second intersection:
  454. ")"Int,End")) 
  455.        (Setq A (/ (+ (Car P1) (Car P2)) 2)) 
  456.        (Setq B (/ (+ (Cadr P1) (Cadr P2)) 2)) 
  457.        (Setq P3 (Osnap (List A B) "Near")) 
  458.        (Command "Break" P3 "F" P1 P2) 
  459.